package logger

import (
	"io"
	"os"

	"github.com/riete/logger"
)

var fw io.WriteCloser
var defaultLogger *logger.Logger

func Init() {
	rotator := logger.NewFileRotator(logger.SizeGiB, 1)
	fw = logger.NewFileWriter("migration.log", rotator)
	options := []logger.Option{logger.WithColor(), logger.WithMultiWriter(os.Stdout)}
	defaultLogger = logger.New(fw, options...)
}

func Debug(msg string, args ...any) {
	defaultLogger.Debug(msg, args...)
}

func Info(msg string, args ...any) {
	defaultLogger.Info(msg, args...)
}

func Warn(msg string, args ...any) {
	defaultLogger.Warn(msg, args...)
}

func Error(msg string, args ...any) {
	defaultLogger.Error(msg, args...)
}

func Errorf(msg string, args ...any) {
	defaultLogger.Errorf(msg, args...)
}

func Fatal(msg string, args ...any) {
	defaultLogger.Error(msg, args...)
	os.Exit(1)
}

func Close() {
	_ = fw.Close()
}
